const obj = {
    name: 'John',
    age: 30,
    // 读书 写作 撸码 调试
    hobbies: ['reading', 'writing', 'coding', 'playingGame', 'debugging'],
    sayHello() {
        console.log("hello");
    }
}

const arr = obj.hobbies

/* 求出所有爱好的总字符数 */
/* arr.reduce将arr中的所有元素按自定义逻辑合成为一个元素 最终返回这个合二为一的值*/
// const result = arr.reduce(
//     (pv, cv) => {
//         console.log("pv/cv/ci", pv, cv);

//         // pv和cv搅基产生的果实 将会作为新的pv与下一个元素继续搅基
//         return pv + cv.length
//     },

//     // 如果有初始值 则初始值先和0号元素搅基 （如果没有初始值 则0号元素作为pv先和1号元素作为cv 搅基）
//     // 身下的果实再作为新的pv与1号元素搅基 
//     // 产生的果实再继续与2号元素搅基。。。 
//     // 与最后一个元素搅基的结果 就是最终reduce（合成）的结果
//     0
// )

/* 简写 */
// console.log(
//     arr.reduce(
//         (pv, cv) => pv + cv.length,
//         0
//     )
// );


/* 求出所有爱好中最长的那一个 */
// console.log(
//     arr.reduce(
//         (pv, cv) => pv.length > cv.length ? pv : cv
//     )
// );

/* 求出所有爱好中最长的那一个 及其 长度 */
// ['reading', 'writing', 'coding', 'playingGame', 'debugging']
// console.log(
//     arr.reduce(
//         // 搅基与结晶规则
//         // 0 > 'reading'.length ? ['', 0] : ['reading',7]
//         (pv, cv) => pv[1] > cv.length ? pv : [cv, cv.length],

//         // 第一个搅基者 它将首先与头一个元素搅基
//         ['', 0]
//     ),

// );

const dict = {
    "reading": "读书",
    "writing": "写作",
    "coding": "撸码",
    "debuuging": "调试",
    "playingGame": "打游戏"
}

/* 将爱好过滤出长度不超7字符的爱好 映射为中文并输出 */
// const filteredArr = arr.filter(
//     item => item.length <= 7
// )
// const mappedArr = filteredArr.map(
//     item => dict[item]
// )
// console.log(filteredArr, mappedArr);

arr.filter(
    item => item.length <= 7
).map(
    item => dict[item]
).forEach(
    item => console.log(item)
)




